↳ Prolog
↳ PrologToPiTRSProof
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
MINUS_IN(X, Y, Z) → U21(X, Y, Z, le_in(X, Y, B))
MINUS_IN(X, Y, Z) → LE_IN(X, Y, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U21(X, Y, Z, le_out(X, Y, B)) → U31(X, Y, Z, if_in(B, X, Y, Z))
U21(X, Y, Z, le_out(X, Y, B)) → IF_IN(B, X, Y, Z)
IF_IN(false, X, Y, s(Z)) → U41(X, Y, Z, p_in(X, X1))
IF_IN(false, X, Y, s(Z)) → P_IN(X, X1)
U41(X, Y, Z, p_out(X, X1)) → U51(X, Y, Z, minus_in(X1, Y, Z))
U41(X, Y, Z, p_out(X, X1)) → MINUS_IN(X1, Y, Z)
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
MINUS_IN(X, Y, Z) → U21(X, Y, Z, le_in(X, Y, B))
MINUS_IN(X, Y, Z) → LE_IN(X, Y, B)
LE_IN(s(X), s(Y), B) → U11(X, Y, B, le_in(X, Y, B))
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
U21(X, Y, Z, le_out(X, Y, B)) → U31(X, Y, Z, if_in(B, X, Y, Z))
U21(X, Y, Z, le_out(X, Y, B)) → IF_IN(B, X, Y, Z)
IF_IN(false, X, Y, s(Z)) → U41(X, Y, Z, p_in(X, X1))
IF_IN(false, X, Y, s(Z)) → P_IN(X, X1)
U41(X, Y, Z, p_out(X, X1)) → U51(X, Y, Z, minus_in(X1, Y, Z))
U41(X, Y, Z, p_out(X, X1)) → MINUS_IN(X1, Y, Z)
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
LE_IN(s(X), s(Y), B) → LE_IN(X, Y, B)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
LE_IN(s(X)) → LE_IN(X)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
IF_IN(false, X, Y, s(Z)) → U41(X, Y, Z, p_in(X, X1))
U41(X, Y, Z, p_out(X, X1)) → MINUS_IN(X1, Y, Z)
U21(X, Y, Z, le_out(X, Y, B)) → IF_IN(B, X, Y, Z)
MINUS_IN(X, Y, Z) → U21(X, Y, Z, le_in(X, Y, B))
minus_in(X, Y, Z) → U2(X, Y, Z, le_in(X, Y, B))
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
U2(X, Y, Z, le_out(X, Y, B)) → U3(X, Y, Z, if_in(B, X, Y, Z))
if_in(false, X, Y, s(Z)) → U4(X, Y, Z, p_in(X, X1))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
U4(X, Y, Z, p_out(X, X1)) → U5(X, Y, Z, minus_in(X1, Y, Z))
U5(X, Y, Z, minus_out(X1, Y, Z)) → if_out(false, X, Y, s(Z))
if_in(true, X, Y, 0) → if_out(true, X, Y, 0)
U3(X, Y, Z, if_out(B, X, Y, Z)) → minus_out(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
IF_IN(false, X, Y, s(Z)) → U41(X, Y, Z, p_in(X, X1))
U41(X, Y, Z, p_out(X, X1)) → MINUS_IN(X1, Y, Z)
U21(X, Y, Z, le_out(X, Y, B)) → IF_IN(B, X, Y, Z)
MINUS_IN(X, Y, Z) → U21(X, Y, Z, le_in(X, Y, B))
p_in(s(X), X) → p_out(s(X), X)
p_in(0, 0) → p_out(0, 0)
le_in(s(X), s(Y), B) → U1(X, Y, B, le_in(X, Y, B))
le_in(s(X), 0, false) → le_out(s(X), 0, false)
le_in(0, Y, true) → le_out(0, Y, true)
U1(X, Y, B, le_out(X, Y, B)) → le_out(s(X), s(Y), B)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
U21(X, le_out(B)) → IF_IN(B, X)
U41(p_out(X1)) → MINUS_IN(X1)
IF_IN(false, X) → U41(p_in(X))
MINUS_IN(X) → U21(X, le_in(X))
p_in(s(X)) → p_out(X)
p_in(0) → p_out(0)
le_in(s(X)) → U1(le_in(X))
le_in(s(X)) → le_out(false)
le_in(0) → le_out(true)
U1(le_out(B)) → le_out(B)
p_in(x0)
le_in(x0)
U1(x0)
Used ordering: POLO with Polynomial interpretation [25]:
p_in(s(X)) → p_out(X)
le_in(s(X)) → U1(le_in(X))
le_in(s(X)) → le_out(false)
POL(0) = 0
POL(IF_IN(x1, x2)) = x1 + x2
POL(MINUS_IN(x1)) = 2·x1
POL(U1(x1)) = 2·x1
POL(U21(x1, x2)) = x1 + x2
POL(U41(x1)) = x1
POL(false) = 0
POL(le_in(x1)) = x1
POL(le_out(x1)) = 2·x1
POL(p_in(x1)) = x1
POL(p_out(x1)) = 2·x1
POL(s(x1)) = 1 + 2·x1
POL(true) = 0
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ UsableRulesProof
U41(p_out(X1)) → MINUS_IN(X1)
U21(X, le_out(B)) → IF_IN(B, X)
IF_IN(false, X) → U41(p_in(X))
MINUS_IN(X) → U21(X, le_in(X))
p_in(0) → p_out(0)
le_in(0) → le_out(true)
U1(le_out(B)) → le_out(B)
p_in(x0)
le_in(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
U41(p_out(X1)) → MINUS_IN(X1)
U21(X, le_out(B)) → IF_IN(B, X)
IF_IN(false, X) → U41(p_in(X))
MINUS_IN(X) → U21(X, le_in(X))
le_in(0) → le_out(true)
p_in(0) → p_out(0)
p_in(x0)
le_in(x0)
U1(x0)
U1(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
U21(X, le_out(B)) → IF_IN(B, X)
U41(p_out(X1)) → MINUS_IN(X1)
IF_IN(false, X) → U41(p_in(X))
MINUS_IN(X) → U21(X, le_in(X))
le_in(0) → le_out(true)
p_in(0) → p_out(0)
p_in(x0)
le_in(x0)
No rules are removed from R.
IF_IN(false, X) → U41(p_in(X))
POL(0) = 0
POL(IF_IN(x1, x2)) = 2·x1 + x2
POL(MINUS_IN(x1)) = 2·x1
POL(U21(x1, x2)) = x1 + x2
POL(U41(x1)) = x1
POL(false) = 2
POL(le_in(x1)) = x1
POL(le_out(x1)) = 2·x1
POL(p_in(x1)) = x1
POL(p_out(x1)) = 2·x1
POL(true) = 0
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ UsableRulesReductionPairsProof
↳ QDP
↳ DependencyGraphProof
U41(p_out(X1)) → MINUS_IN(X1)
U21(X, le_out(B)) → IF_IN(B, X)
MINUS_IN(X) → U21(X, le_in(X))
le_in(0) → le_out(true)
p_in(0) → p_out(0)
p_in(x0)
le_in(x0)